package application;

/**
*	@(#) Delete.java
*
*	Une commande concrete implementant l'interface Command.
*	Cette commande permet de realiser une suppression.
*
*	@see Command
*/
public class Delete implements Command {
	
	/**
	*	L'interface homme-machine sur laquelle est effectue la suppression. 
	*/
	private UI ui;
	
	/**
	*	L'editeur sur lequel on veut realiser la suppression. 
	*/
	private Editor editor;
	
	/**
	*	L'enregistreur dans lequel la commande sera enregistree.
	*/
	private Recorder myRecorder;
	
	/**
	*	Constructeur Delete.
	*/
	public Delete(UI ui, Editor editor, Recorder recorder) {
		this.ui=ui;
		this.editor=editor;
		this.myRecorder=recorder;
	}
	
	/**
	*	Lance l'execution d'une suppression.
	*/
	public void execute() {
		editor.delete();
		myRecorder.record(this);
	}
	
	/**
	*	Lance l'execution d'une suppression et remet l'interface homme-machine a jour.
	*/
	public void executeM() {
		editor.delete();
		ui.refresh(editor.getBuffer().getText(), editor.getSelection().getBegin(), editor.getSelection().getEnd());
	}
	
	/**
	*	L'etat de cette commande n'est pas destine a etre conserve.
	*/
	public Memento getMemento() {
		return null;
	}

	/**
	*	L'etat de cette commande n'est pas destine a etre restaure.
	*/
	public void setMemento(Memento memento) {
	}

}
